package fr.dauphine.bookstore.commun;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

/**
 * Messages affiches a l'utilisateur.
 */
public final class MessagesUtil {

	/**
	 * Message d'erreur.
	 */
	public static final String ERROR = "erreur";

	/**
	 * Message d'information.
	 */
	public static final String INFORMATION = "info";

	/**
	 * Cle de l'attribut contenant les messages.
	 */
	private static final String REQUEST_MESSAGES_KEY = "REQUEST_MESSAGES";

	/**
	 * Constructeur prive.
	 */
	private MessagesUtil() {
	}

	/**
	 * Ajoute un message.
	 * 
	 * @param request
	 *            Requete
	 * @param type
	 *            Type de message
	 * @param message
	 *            Message
	 */
	public static void addMessage(final HttpServletRequest request, final String type, final String message) {
		getMessages(request).put(message, type);
	}

	/**
	 * Retourne la liste des messages.
	 * 
	 * @param request
	 *            Requete
	 * @return Messages
	 */
	@SuppressWarnings("unchecked")
	public static Map<String, String> getMessages(final HttpServletRequest request) {
		Map<String, String> map = (Map<String, String>) request.getAttribute(REQUEST_MESSAGES_KEY);

		if (map == null) {
			map = new HashMap<String, String>();
			request.setAttribute(REQUEST_MESSAGES_KEY, map);
		}

		return map;
	}

	/**
	 * Verifie s'il y a des erreurs.
	 * 
	 * @param request
	 *            Requete
	 * @return Vrai si un des messages ajoutes est une erreur, faux sinon
	 */
	public static Boolean isThereErrors(final HttpServletRequest request) {
		return getMessages(request).values().contains(ERROR);
	}
}
